﻿using System;
using Sinacor.UI.Bovespa.Contabil.Communication.Bovespa.Contabil.ContaContabilFaturamento;
using System.Collections.Generic;
using Sinacor.Infra.UI.Common;

namespace Sinacor.UI.Bovespa.Contabil.Communication.Translator.DataContractToModel
{
    /// <summary>
    /// Translator.DataContractToModel Class - ContaContabilFaturamento
    /// </summary>
    public class ContaContabilFaturamento
    {
        #region ToContaContabilFaturamento

        public Model.ContaContabilFaturamento ToContaContabilFaturamento(ContaContabilFaturamentoResponse from)
        {
            if (from == null) return null;

            return new Model.ContaContabilFaturamento
            {
                CodigoBolsa = from.CodigoBolsa,
                CodigoEventoContabil = from.CodigoEventoContabil,
                CodigoGrupoContabil = from.CodigoGrupoContabil,
                CodigoHistoricoCredito = from.CodigoHistoricoCredito,
                CodigoHistoricoDebito = from.CodigoHistoricoDebito,
                CodigoHistoricoEstorno = from.CodigoHistoricoEstorno,
                CodigoMunicipio = from.CodigoMunicipio,
                CodigoResumidoCredito = from.CodigoResumidoCredito,
                CodigoResumidoDebito = from.CodigoResumidoDebito,
                ContaCredito = from.ContaCredito,
                ContaDebito = from.ContaDebito,
                DescricaoBolsa = from.DescricaoBolsa,
                DescricaoEventoContabil = from.DescricaoEventoContabil,
                DescricaoGrupoContabil = from.DescricaoGrupoContabil,
                DescricaoMunicipio = from.DescricaoMunicipio,
                DigitoHistoricoCredito = from.DigitoHistoricoCredito,
                DigitoHistoricoDebito = from.DigitoHistoricoDebito,
                DigitoHistoricoEstorno = from.DigitoHistoricoEstorno,
                DigitoResumidoCredito = from.DigitoResumidoCredito,
                DigitoResumidoDebito = from.DigitoResumidoDebito
            };
        }        

        public ModelCollection<Model.ContaContabilFaturamento> ToContaContabilFaturamento(List<ContaContabilFaturamentoResponse> from)
        {
            if (from == null) return null;

            ModelCollection<Model.ContaContabilFaturamento> model = new ModelCollection<Model.ContaContabilFaturamento>();

            foreach (ContaContabilFaturamentoResponse item in from)
            {
                model.Add(new Model.ContaContabilFaturamento
                {
                    CodigoBolsa = item.CodigoBolsa,
                    CodigoEventoContabil = item.CodigoEventoContabil,
                    CodigoGrupoContabil = item.CodigoGrupoContabil,
                    CodigoHistoricoCredito = item.CodigoHistoricoCredito,
                    CodigoHistoricoDebito = item.CodigoHistoricoDebito,
                    CodigoHistoricoEstorno = item.CodigoHistoricoEstorno,
                    CodigoMunicipio = item.CodigoMunicipio,
                    CodigoResumidoCredito = item.CodigoResumidoCredito,
                    CodigoResumidoDebito = item.CodigoResumidoDebito,
                    ContaCredito = item.ContaCredito,
                    ContaDebito = item.ContaDebito,
                    DescricaoBolsa = item.DescricaoBolsa,
                    DescricaoEventoContabil = item.DescricaoEventoContabil,
                    DescricaoGrupoContabil = item.DescricaoGrupoContabil,
                    DescricaoMunicipio = item.DescricaoMunicipio,
                    DigitoHistoricoCredito = item.DigitoHistoricoCredito,
                    DigitoHistoricoDebito = item.DigitoHistoricoDebito,
                    DigitoHistoricoEstorno = item.DigitoHistoricoEstorno,
                    DigitoResumidoCredito = item.DigitoResumidoCredito,
                    DigitoResumidoDebito = item.DigitoResumidoDebito
                });
            }
            return model;
        }

        #endregion

        #region ToPlanoConta

        public Model.PlanoConta ToPlanoConta(PlanoContaResponse from)
        {
            if (from == null) return null;

            return new Model.PlanoConta
            {
                CodigoConta = from.CodigoConta,
                CodigoResumidoConta = from.CodigoResumidoConta,
                DigitoResumidoConta = from.DigitoResumidoConta,
                NomeConta = from.NomeConta
            };
        }

        public ModelCollection<Model.PlanoConta> ToPlanoConta(List<PlanoContaResponse> from)
        {
            if (from == null) return null;

            ModelCollection<Model.PlanoConta> model = new ModelCollection<Model.PlanoConta>();

            foreach (PlanoContaResponse item in from)
            {
                model.Add(new Model.PlanoConta
                {
                    CodigoConta = item.CodigoConta,
                    CodigoResumidoConta = item.CodigoResumidoConta,
                    DigitoResumidoConta = item.DigitoResumidoConta,
                    NomeConta = item.NomeConta
                });
            }
            return model;
        }

        #endregion
    }
}
